# Triangle-Radio или как я стал пиратом
![Triangle-Radio](https://notabug.org/Black_Triangle/Triangle-Radio/raw/aa7779adb738dc2abe90210b9f0bed588b2e98e0/6878678768678)

## Потребуется:

* Orange Pi PC - покупал тут https://t.me/AliExpress_Hacker/422

* Карточка MicroSD - покупал тут https://t.me/komp_ali/429

* Кабель Ethernet - гдето валялся

* Видео: https://www.youtube.com/watch?v=jNOwytAz44I

## Приступим:

Качай armbian от сюда https://www.armbian.com/ под свою модель платы
и запихивай в microSD

## Врубаем, конектимся по ssh и погнали
Создаем пользователя и Обновляем ОС
```
apt update
apt upgrade
```
Создаем папку для музыки
```
mkdir radio_music
```
Закачиваем музыку, создаем плейлист.

Используем команду:
```
find . -name '*.mp3'
```
Точно также как в видео, потом подрубаемся заного
## Ставим icecast2
```
sudo apt install icecast2
```
Составляем конфиг:
```
sudo nano /etc/icecast2/icecast.xml
```
Сам пример конфига:
```
<icecast>
Информация о сервере
    <location>Triangle Radio</location>
    <admin>Triangle</admin>
    <hostname>Triangle.ru</hostname>
    <fileserve>1</fileserve>

Настройки ограничений сервера, всё по-умолчанию
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <burst-on-connect>1</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>

Настройки авторизации
    <authentication>
Пароль для подключения источника потока данных
        <source-password>Triangle</source-password>
Пароль для релей-слейва. В данной статье роли не играет
        <relay-password>Triangle</relay-password>

Логин/пароль администратора веб-интерфейса
        <admin-user>Triangle</admin-user>
        <admin-password>Triangle</admin-password>
    </authentication>

Имя точки монтирования "по-умолчанию"
    <shoutcast-mount>/stream</shoutcast-mount>

Настройки сервера. Случаем любые соединения на порт 9090
    <listen-socket>
        <port>9090</port>
        <bind-address>0.0.0.0</bind-address>
        <shoutcast-mount>/stream</shoutcast-mount>
    </listen-socket>

Здесь можно прописать любые дополнительные заголовки.
Я оставил то, что предлагалось в конфиге, поставляемом в
Debian
    <http-headers>
        <header name="Access-Control-Allow-Origin" value="*" />
    </http-headers>

Настройка путей. Названия говорят за себя
    <paths>
        <alias source="/" destination="/status.xsl"/>
        <basedir>/</basedir>
        <webroot>/etc/icecast2/web</webroot>
        <adminroot>/etc/icecast2/admin</adminroot>
        <logdir>/var/log/icecast2/</logdir>
        <pidfile>/var/log/icecast2/icecast.pid</pidfile>
    </paths>

Логирование. Уровень от 4 (trace)
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <playlistlog>playlist.log</playlistlog>
        <loglevel>3</loglevel>
        <logsize>10000</logsize>
    </logging>

Настройки безопасности. В случае, если сервер запущен от
пользователя root, то появляется возможность сделать
chroot (тут играет роль указанный выше basedir) и смениить
пользователя. Я сразу запускаю сервис от пользователя
icecast2, так что здесь этого не требуется
    <security>
        <chroot>0</chroot>
    </security>
</icecast>
```
Включаем:
```
systemctl enable icecast
systemctl start icecast
```
В браузере тестим
## Ставим Ezstream
Библиотеки:
```
apt-get install libshout3-dev libxml2-dev libtag1-dev libshout3-dev libvorbis-dev libogg-dev check libtag-extras-dev libtagc0-dev
```
Исходники:
```
wget http://downloads.xiph.org/releases/ezstream/ezstream-0.6.0.tar.gz
tar xvzf ezstream-0.6.0.tar.gz
cd ezstream-0.6.0
```
Сборка:
```
libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
autoreconf -f
./configure
make
sudo make install
```
Проверяем:
```
ezstream -V
```
Генерим конфиг:
```
sudo nano /etc/icecast2/ezstream.xml
```
Пример конфига:
```
<ezstream>
Адрес Icecast
    <url>http:10.8.0.4:9090/stream</url>
Пароль авторизации источника
    <sourcepassword>Triangle</sourcepassword>
Формат передаваемых данных
    <format>MP3</format>
Путь к плейлисту
    <filename>/hone/q/playlist.txt</filename>
Флаг того, является плейлист программой. Если "1", то будет
произведён запуск, плейлист должен выдать путь к файлу
для вещания
    <playlist_program>0</playlist_program>
Перемешивать ли песни
    <shuffle>1</shuffle>
Мета-данные о канале
    <svrinfoname>Sex, Dugs, Brutal Metal</svrinfoname>
    <svrinfogenre>Rock</svrinfogenre>
    <svrinfodescription>Something about channel</svrinfodescription>
Настройки перекодирования. Мне не нужны.
    <reencode>
        <enable>0</enable>
    </reencode>
</ezstream>
```
Запуск:
```
ezstream -c /etc/icecast2/ezstream.xml
```
## Ты пират!!!
### Заключение

Спасибо за внимание к проекту друг, для создания этой инструкции и видео пришлось потратить несколько больше сил и времени чем занимают обычные мои ролики, если у тебя есть возможность поддержать канал, то буду рад любой поддержке:

* Bitcoin: 1AWBMoeV8UEybQi4QrQMmeFX1sXvRLDeCn

* Ethereum: 0xB151c82A264eF0EA848c120444173658BFA18Cf9

* DASH: XcNtFGW1ydGLudvTPWoBvPZZxG844EvksR

* Zcash: t1hCJwasRozdkoaK9HLpngoEVPQhEZpxdFT

* Monero: 41iNuQsc6GjZofH3XkKwNYVSXVsrjipfVjjNR3nbsL5XjJMFTfykW1T6CkYz1StdXH2t8dhnjUTT9FwEPpbsFVxjHuuYabQ

* Litecoin: LNpw5QS5fvH1NW5AMp35zzMs1FYKuAUuPP

* Bitcoin Cash: qrs29h849m9vj02ljd2utf6g7e7hxnntqvkhz8r8u3

* Ethereum Classic: 0xc20a61Ec5765aC0059D6e85f069B440889EBfcC5
